package com.joolun.weixin.service;

import java.util.List;
import java.util.Set;

import com.joolun.system.domain.ScrmCustomer;
import com.baomidou.mybatisplus.extension.service.IService;
import com.joolun.weixin.entity.dto.WxStaffDeleteCustomerDTO;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.bean.external.WxCpUpdateRemarkRequest;
import me.chanjar.weixin.cp.bean.external.WxCpWelcomeMsg;
import me.chanjar.weixin.cp.bean.external.contact.WxCpExternalContactBatchInfo;
import me.chanjar.weixin.cp.bean.external.contact.WxCpExternalContactInfo;
import org.redisson.api.RLock;


/**
 * 企业微信客户Service接口
 * 
 * @author joolun
 * @date 2025-02-25
 */
public interface IScrmCustomerService extends IService<ScrmCustomer>
{
    /**
     * 查询企业微信客户
     *
     * @param id 企业微信客户主键
     * @return 企业微信客户
     */
    public ScrmCustomer selectScrmCustomerById(Long id);

    /**
     * 查询企业微信客户列表
     *
     * @param scrmCustomer 企业微信客户
     * @return 企业微信客户集合
     */
    public List<ScrmCustomer> selectScrmCustomerList(ScrmCustomer scrmCustomer);

    /**
     * 新增企业微信客户
     *
     * @param scrmCustomer 企业微信客户
     * @return 结果
     */
    public int insertScrmCustomer(ScrmCustomer scrmCustomer);

    /**
     * 修改企业微信客户
     *
     * @param scrmCustomer 企业微信客户
     * @return 结果
     */
    public int updateScrmCustomer(ScrmCustomer scrmCustomer);

    /**
     * 批量删除企业微信客户
     *
     * @param ids 需要删除的企业微信客户主键集合
     * @return 结果
     */
    public int deleteScrmCustomerByIds(Long[] ids);

    /**
     * 删除企业微信客户信息
     *
     * @param id 企业微信客户主键
     * @return 结果
     */
    public int deleteScrmCustomerById(Long id);

    ScrmCustomer checkExists(String id);





    void sync(String extCorpId, boolean isSync)  ;






    /**
     * 发送欢迎语
     * @param msg
     */
    void sendWelcomeMsg(WxCpWelcomeMsg msg);


     WxCpExternalContactInfo getCustomInfo(String userId);


    /**
     * 删除客户
     * @param customerDTO
     */
    void staffDeleteCustomer(WxStaffDeleteCustomerDTO customerDTO);










}
